// 用于axios 中断请求

export default {
  // 命名空间的使用
  namespaced: true,
  state:{
    cache: {},
  },

  mutations: {
    addCancelToken(state, {cacheKey,c}) {
      // 相同请求做清除操作
     if (state.cache.hasOwnProperty(cacheKey)){
       console.log("vuex清除")
       state.cache.cacheKey() // 清除
       delete this.cache[cacheKey];
     }else{
       console.log("vuex保存")
       state.cache[cacheKey] = c //保存
     }

    },

    // 取消所有请求(在全局路由钩子中使用)
    clearCancelToken(state,key) {
      // 单key 的 cancel
        if (key) {
          const cancel = state.cache[key];
          if (cancel && typeof cancel === 'function') {
            cancel();
            delete state.cache[key];
          }
          return;
        }
        /*取消全部 (在全局路由钩子中使用)  不用传参*/
        Object.keys(state.cache).forEach(cacheKey => {
          const cancel = state.cache[cacheKey];
          cancel();
          delete state.cache[cacheKey];
        });
    }
  }
}

